package com.hxkcloud.patient.utils;

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

/**
 * Created by Administrator on 2017/4/14.
 */

public class DataUtils {

    /*
         * 将时间戳转为字符串 ，格式：yyyy-MM-dd HH:mm:ss
         */
    public static String getStrTime_ymd_hms(String cc_time) {
        String re_StrTime = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        // 例如：cc_time=1291778220
        long lcc_time = Long.valueOf(cc_time);
        re_StrTime = sdf.format(new Date(lcc_time));
        return re_StrTime;
    }


        /**
         * 判断给定字符串时间是否为今日(效率不是很高，不过也是一种方法)
         * @param sdate
         * @return boolean
         */
        public static boolean isToday(String sdate){
            boolean b = false;
            Date time = toDate(sdate);
            Date today = new Date();
            if(time != null){
                String nowDate = dateFormater2.get().format(today);
                String timeDate = dateFormater2.get().format(time);
                if(nowDate.equals(timeDate)){
                    b = true;
                }
            }
            return b;
        }

        /**
         * 将字符串转位日期类型
         * @param sdate
         * @return
         */
        public static Date toDate(String sdate) {
            try {
                return dateFormater.get().parse(sdate);
            } catch (ParseException e) {
                return null;
            }
        }

        private final static ThreadLocal<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() {
            @Override
            protected SimpleDateFormat initialValue() {
                return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            }
        };

        private final static ThreadLocal<SimpleDateFormat> dateFormater2 = new ThreadLocal<SimpleDateFormat>() {
            @Override
            protected SimpleDateFormat initialValue() {
                return new SimpleDateFormat("yyyy-MM-dd");
            }
        };
        private static ThreadLocal<SimpleDateFormat> DateLocal = new ThreadLocal<SimpleDateFormat>();
        /**
         * 判断是否为今天(效率比较高)
         * @param day 传入的 时间  "2016-06-28 10:10:30" "2016-06-28" 都可以
         * @return true今天 false不是
         * @throws ParseException
         */
        public static boolean IsToday(String day) throws ParseException {

            Calendar pre = Calendar.getInstance();
            Date predate = new Date(System.currentTimeMillis());
            pre.setTime(predate);

            Calendar cal = Calendar.getInstance();
            Date date = getDateFormat().parse(day);
            cal.setTime(date);

            if (cal.get(Calendar.YEAR) == (pre.get(Calendar.YEAR))) {
                int diffDay = cal.get(Calendar.DAY_OF_YEAR)
                        - pre.get(Calendar.DAY_OF_YEAR);

                if (diffDay == 0) {
                    return true;
                }
            }
            return false;
        }

        /**
         * 判断是否为昨天(效率比较高)
         * @param day 传入的 时间  "2016-06-28 10:10:30" "2016-06-28" 都可以
         * @return true今天 false不是
         * @throws ParseException
         */
        public static boolean IsYesterday(String day) throws ParseException {

            Calendar pre = Calendar.getInstance();
            Date predate = new Date(System.currentTimeMillis());
            pre.setTime(predate);

            Calendar cal = Calendar.getInstance();
            Date date = getDateFormat().parse(day);
            cal.setTime(date);

            if (cal.get(Calendar.YEAR) == (pre.get(Calendar.YEAR))) {
                int diffDay = cal.get(Calendar.DAY_OF_YEAR)
                        - pre.get(Calendar.DAY_OF_YEAR);

                if (diffDay == -1) {
                    return true;
                }
            }
            return false;
        }

        public static SimpleDateFormat getDateFormat() {
            if (null == DateLocal.get()) {
                DateLocal.set(new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA));
            }
            return DateLocal.get();
        }




}
